#!/bin/sh

MOD_NAME=scepClient
MOD_DEFAULTS=/opt/$MOD_NAME/etc/defaults
MOD_SETTINGS=/opt/$MOD_NAME/etc/settings
[ -L "$MOD_SETTINGS" ] && MOD_SETTINGS=`readlink $MOD_SETTINGS`

SCEP_DATA=/var/data/$MOD_NAME

[ -f "$MOD_SETTINGS" ] || cp $MOD_DEFAULTS $MOD_SETTINGS
[ -x "/sbin/hash_verify" ] && [ ! -f "$MOD_SETTINGS.hash" ] && cp $MOD_DEFAULTS.hash $MOD_SETTINGS.hash

. $MOD_SETTINGS

case "$1" in
  start|restart)
    [ -x "/sbin/hash_verify" ] && ! hash_verify $MOD_SETTINGS && exit 1
    if [ "$1" = "restart" ]; then
      echo -n "Restarting module $MOD_NAME: "
    else
      echo -n "Starting module $MOD_NAME: "
    fi
    if [ "$MOD_SCEPCLIENT_ENABLED" != "1" ]; then
      echo "skipped"
      exit 0
    fi
    if [ ! -z "$MOD_SCEPCLIENT_SUCCESS_SCRIPT" ]; then
      decode $MOD_SCEPCLIENT_SUCCESS_SCRIPT > /var/scripts/scep-success
    fi
    if [ ! -z "$MOD_SCEPCLIENT_FAILURE_SCRIPT" ]; then
      decode $MOD_SCEPCLIENT_FAILURE_SCRIPT > /var/scripts/scep-failure
    fi
    /opt/$MOD_NAME/bin/check-cert.sh &
    RETVAL=$?
    if [ $RETVAL = 0 ]; then echo "done"; else echo "failed"; fi
    exit $RETVAL
    ;;
  stop)
    echo -n "Stopping module $MOD_NAME: done"
    # not much to do here
    exit 0
    ;;
  status)
    echo -n "Module $MOD_NAME "
    killall -0 enroll-cert.sh 2> /dev/null
    RETVAL=$?
    if [ $RETVAL = 0 ]; then
      echo "running"
      echo -n "Certificate "
      if [ -f $SCEP_DATA/latest.crt ]; then echo "re-enrollment"; else echo "enrollment"; fi
    else
      if [ "$MOD_SCEPCLIENT_ENABLED" != "1" ]; then
        echo "disabled"
      else
        echo "not running"
      fi
      echo -n "Certificate "
      if [ -f $SCEP_DATA/latest.crt ]; then
        SERIAL=`ls -l $SCEP_DATA/latest.crt | awk '{print $11}'`
        echo "enrolled as ${SERIAL:0:-4}"
      else
        echo "not enrolled"
      fi
    fi
    exit 0
    ;;
  defaults)
    cp $MOD_DEFAULTS $MOD_SETTINGS 2> /dev/null
    [ -f "$MOD_DEFAULTS.hash" ] && cp $MOD_DEFAULTS.hash $MOD_SETTINGS.hash
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status|defaults}"
    exit 1
esac
